iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 24
0

我們要定義URL的模式,URL模式描述了URL是如何設計出來,讓Django知道怎麼把瀏覽器的請求和網站URL配對起來,每個URL都會映對到特定的view,view函式會擷取和處理網頁所需要的資料,視圖函式一般會呼叫一個template,它會建置瀏覽器能讀取的網頁

映射URL

使用者利用再瀏覽器中輸入URL和點按連結來請求網頁,所以我們要確定專案需要哪些專案URL來配合,首先我們要把基本的URL映對到學習日誌主題

開啟learning_log資料夾中的urls.py檔,我們會看到在urlpatterns變數存放了專案中的應用程式URL,在這裡含有admin.site.urls模組,我們要新增learning_logs.urls模組,如下

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    # 以下為新增程式碼
    url(r'', include('learning_logs.urls', namespace='learning_logs')), # 這行程式碼包含有namespace引數讓我們能將learning_logs的URL和專案中的其他URL區分開來
]

現在我們要在learning_logs資料夾內建立第二個urls.py檔

from django.conf.urls import url # 匯入url函式,需要用它來映對到URL視窗

from . import views # 匯入views模組,其中句點是讓python從目前的urls.py模組所在的資料夾中匯入視窗

urlpatterns = [
    url(r'^$', views.index, name='index'), # 此函式接受三個引數來處理,第一個引數是正規表示式,第二個引數指定要呼叫的函式視窗,第三個引數把這個URL模式的名稱指定為index
]

編寫視圖

視圖函式從請求中取得的資訊,準備好生成網頁所需的資料後,再把這些資料傳送到瀏覽器,一般是透過使用定義頁面外觀的模板來處理

打開learning_logs中的views.py,這個檔案室我們在執行startapp命令時自動生成的,當URL請求與剛才定義的模式比對符合時,Django會在views.py檔尋找index函式,再將請求物件傳給視圖函式,我們現在要在裡面新增一個render函式,在這裡render函式包含兩個引數,原始請求物件和一個可用來建立網頁的模板,如下

from django.shortcuts import render

# Create your views here.
def index(request):
    return render(request, 'learning_logs/index.html')

編寫模板

模板設定了網頁的架構,在learning_logs資料夾內建立一個名為templates的資料夾,在templates資料夾中再建立一個名為learning_logs資料夾,這樣建立或許有點多餘,但讓Django有一個清楚明確的結構

我們現在要在最裡面的learning_logs資料夾建立一個index.html檔,然後在裡面編寫程式碼

開啟index.html

<p> hello,this is weiting's learning_log </p>

然後再開啟我們原本的http://localhost:8000/ 就會看到下圖

附上排版較精美的
HackMD網址:https://hackmd.io/9hERbJo3R7ec46gMs5ldGQ?both

今天結束,各位明天見


資料來源:<<python程式設計的樂趣>>-Eric Matthes著/H&C譯


上一篇
DAY 23 Django新增主題
下一篇
DAY 25 Django建置其他網頁
系列文
初學者Python的應用實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
edda20047
iT邦新手 5 級 ‧ 2019-03-21 14:38:49

您好,我跟隨教學Day21-Day23都很順利,到Day24在learning_log\urls.py修改後出現報錯,後來發現應該是Django改版的緣故,依照這篇的方法修改後就可順利執行,供參考~

我要留言

立即登入留言